<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        var data = [{
            id: 1,
            name: '家电',
            goods: [{
                id: 11,
                gname: '冰箱',
                goods: [{
                        id: 111,
                        gname: '海尔'
                    }, {
                        id: 112,
                        gname: '美的'
                    },

                ]

            }, {
                id: 12,
                gname: '洗衣机'
            }]
        }, {
            id: 2,
            name: '服饰'
        }];
        // 我们想要做输入id号,就可以返回的数据对象
        // 1. 利用 forEach 去遍历里面的每一个对象
        //  function getID(json, id) {
        //     var o = {};
        //     json.forEach(function(item) {
        //         // console.log(item); // 2个数组元素
        //         if (item.id == id) {
        //             // console.log(item);
        //             o = item;
        //             return o;
        //             // 2. 我们想要得里层的数据 11 12 可以利用递归函数
        //             // 里面应该有goods这个数组并且数组的长度不为 0 
        //         } else if (item.goods && item.goods.length > 0) {
        //             o = getID(item.goods, id);
        //         }


        //     });
        //     return o;
        // }
        function getDataById(data, id) {
            var res = {};
            data.forEach(function (ele) {
                if (ele.id === id) {
                    res = ele
                } else if (ele.goods && ele.goods.length > 0) {
                    res = getDataById(ele.goods, id);
                }
            });
            return res;
        }
        console.log(getDataById(data, 112));

        function getIDs(json, id, res) {
            json.forEach(function (item) {
                if (item.id === id) {
                    res.push(item);
                }
                if (item.goods && item.goods.length > 0) {
                    getIDs(item.goods, id, res);
                }
            });
            return res;
        }
        // 获取元素的所有子元素
        function getChildren(parent, res) {
            // 如果当前节点是元素节点，输出当前元素
            // parent.nodeType === 1 && console.log(parent);
            // 获得父节点的所有直接子节点
            var children = parent.children;
            // 遍历 children 中每个节点
            for (var i = 0, len = children.length; i < len; i++) {
                res.push(children[i]);
                // 对当前子节点递归
                getChildren(children[i], res);
            }
            return res;
        }
        console.log(getChildren(document.body, []));






        // console.log(getID(data, 1));
        // console.log(getID(data, 2));
        // console.log(getID(data, 11));
        // console.log(getID(data, 12));
        // console.log(getID(data, 111));
    </script>
</body>

</html>